/**
 * 项目验证辅助模块
 * 提供PLM项目相关验证功能
 */

const dayjs = require('dayjs');

/**
 * 验证项目表单数据
 * @param {Object} data - 要验证的数据
 * @returns {Object} 验证结果，包含valid和errors属性
 */
function validateProjectData(data) {
  const errors = {};
  
  // 基础字段验证
  if (!data.model) {
    errors.model = '请输入项目型号';
  }
  
  if (!data.customerName) {
    errors.customerName = '请输入客户名称';
  }
  
  // 日期验证
  if (!data.startDate) {
    errors.startDate = '请选择开始日期';
  }
  
  if (!data.deadline) {
    errors.deadline = '请选择截止日期';
  } else if (data.startDate && data.deadline) {
    // 转换为日期对象进行比较
    const startMoment = dayjs(data.startDate);
    const endMoment = dayjs(data.deadline);
    if (endMoment.isBefore(startMoment)) {
      errors.deadline = '截止日期不能早于开始日期';
    }
  }
  
  return {
    valid: Object.keys(errors).length === 0,
    errors: errors
  };
}

/**
 * 简易项目验证实现
 * @param {Object} data - 要验证的数据
 * @returns {boolean} 验证是否通过
 */
function quickValidate(data) {
  // 基础验证
  if (!data || !data.model || !data.customerName) {
    return false;
  }
  return true;
}

/**
 * 日期字符串转换为时间戳
 * @param {string} dateStr - 日期字符串，格式为YYYY-MM-DD
 * @returns {number} UNIX时间戳（秒）
 */
function dateToTimestamp(dateStr) {
  if (!dateStr) return Math.floor(Date.now() / 1000);
  return Math.floor(new Date(dateStr.replace(/-/g, '/')).getTime() / 1000);
}

/**
 * 时间戳转换为日期字符串
 * @param {number} timestamp - UNIX时间戳（秒）
 * @returns {string} 日期字符串，格式为YYYY-MM-DD
 */
function timestampToDate(timestamp) {
  if (!timestamp) return dayjs().format('YYYY-MM-DD');
  return dayjs(timestamp * 1000).format('YYYY-MM-DD');
}

module.exports = {
  validateProjectData,
  quickValidate,
  dateToTimestamp,
  timestampToDate
}; 